import request from '@/utils/request'

/**
 * 文件相关API
 */
export default {
  /**
   * 获取支持的文件类型
   */
  getSupportedTypes() {
    return request.get('/api/files/supported-types')
  },

  /**
   * 上传文件
   * @param {File} file - 文件对象
   * @param {Function} onProgress - 进度回调
   */
  uploadFile(file, onProgress) {
    const formData = new FormData()
    formData.append('file', file)

    return request.post('/api/files/upload', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      },
      onUploadProgress: onProgress
    })
  },

  /**
   * 获取文件列表
   * @param {Object} params - 查询参数
   */
  getFileList(params = {}) {
    return request.get('/api/files', { params })
  },

  /**
   * 获取文件详情
   * @param {number} fileId - 文件ID
   */
  getFileDetail(fileId) {
    return request.get(`/api/files/${fileId}`)
  },

  /**
   * 删除文件
   * @param {number} fileId - 文件ID
   */
  deleteFile(fileId) {
    return request.delete(`/api/files/${fileId}`)
  },

  /**
   * 获取文件下载链接
   * @param {number} fileId - 文件ID
   * @param {number} expires - 过期时间(秒)
   */
  getDownloadUrl(fileId, expires = 3600) {
    return request.get(`/api/files/${fileId}/download`, {
      params: { expires }
    })
  },

  /**
   * 重新处理文件
   * @param {number} fileId - 文件ID
   */
  reprocessFile(fileId) {
    return request.post(`/api/files/${fileId}/reprocess`)
  },

  /**
   * 批量删除文件
   * @param {Array} fileIds - 文件ID数组
   */
  batchDeleteFiles(fileIds) {
    return request.post('/api/files/batch-delete', { fileIds })
  },

  /**
   * 获取文件统计信息
   */
  getFileStats() {
    return request.get('/api/files/stats')
  },

  /**
   * 搜索文件
   * @param {string} keyword - 搜索关键词
   * @param {Object} params - 其他参数
   */
  searchFiles(keyword, params = {}) {
    return request.get('/api/files/search', {
      params: { keyword, ...params }
    })
  }
}